/**
 *将注册全局过滤器
 */
import StringUtils from "utils/StringUtils";
import DataType from "utils/DataType";

const modules = [
	require.context("filters/", true, /\.js$/)
];
const Filters = (Vue) => {
	modules.forEach(element => {
		element.keys().forEach(item => {
			// 获取组件配置(如果这个组件选项是通过 `export default` 导出的，那么就会优先使用 `.default`，否则回退到使用模块的根。)
			let vueFilter = element(item).default || element(item);
			let filterName = "";
			if (DataType.isFunction(vueFilter)) {
				filterName = StringUtils.lowerFirst(vueFilter.name);
				// 全局注册过滤器
				Vue.filter(filterName, vueFilter);
			} else if (DataType.isObject(vueFilter)) {
				// 遍历获取过滤器名称和实例
				Object.keys(vueFilter).forEach(key => {
					// 全局注册过滤器
					filterName = StringUtils.lowerFirst(key);
					if (DataType.isFunction(vueFilter[key])) {
						Vue.filter(filterName, vueFilter[key]);
					}
				});
			}
		});
	});
};

export default Filters;
